﻿using System.Globalization;
using System.Text.RegularExpressions;
using System.Windows.Controls;

namespace RG.Common.WPF
{
    public class IORule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            var r = new Regex(@"^[А-ЯЁ][а-яё]+$");
            if (!r.IsMatch(value.ToString()))
            {
                return new ValidationResult(false, "Поле должно начинаться с заглавной буквы и включать только русские буквы");
            }
            return ValidationResult.ValidResult;
            
        }
    }

    public class SurnameRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            var r = new Regex(@"^([А-ЯЁ][а-яё]+)((-[А-ЯЁ][а-яё]+)|(\s[А-ЯЁ][а-яё]+))?$");
            if (!r.IsMatch(value.ToString()))
            {
                return new ValidationResult(false, "Поле должно начинаться с заглавной буквы и включать только русские буквы");
            }
            return ValidationResult.ValidResult;

        }
    }

    public class PhoneRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            var r = new Regex(@"^8-((\d{3}-\d{3})|(\d{4}-\d{2}))-\d{2}-\d{2}$");
            if (!r.IsMatch(value.ToString()))
            {
                return new ValidationResult(false, "Формат записи должен соответствовать следующим: 8-ХХХ-ХХХ-ХХ-ХХ или 8-ХХХХ-ХХ-ХХ-ХХ");
            }
            return ValidationResult.ValidResult;

        }
    }

    public class MobileRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            var r = new Regex(@"^\+7-\d{3}-\d{3}-\d{2}-\d{2}$");
            if (!r.IsMatch(value.ToString()))
            {
                return new ValidationResult(false, "Формат записи должен соответствовать следующему: +7-ХХХ-ХХХ-ХХ-ХХ");
            }
            return ValidationResult.ValidResult;

        }
    }
}
